package com.lc.common.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//import ws.schild.jave.Encoder;
//import ws.schild.jave.MultimediaObject;
//import ws.schild.jave.encode.AudioAttributes;
//import ws.schild.jave.encode.EncodingAttributes;
//import ws.schild.jave.encode.VideoAttributes;

import java.io.File;

/**
 * 视频压缩工具类
 * https://blog.csdn.net/m0_47484034/article/details/138303667
 * https://blog.csdn.net/weixin_41023230/article/details/109113449
 */
public class CompressVideoUtils {
 /*

    private static final Logger log = LoggerFactory.getLogger(CompressVideoUtils.class);

    public static void main(String[] args) {
        // 压缩前文件路径
        String source = "C:\\Users\\Administrator\\Desktop\\aa.mp4";
        // 压缩后的文件路径
        String target = "C:\\Users\\Administrator\\Desktop\\222.mp4";
        compre(source, target);
    }

    *//**
     * 视频压缩
     *
     * @param sourcePath 源文件
     * @param targetPath 目标文件
     *//*
    public static File compre(String sourcePath, String targetPath) {
        File targetFile = null;
        try {
            // 音频编码属性配置
            AudioAttributes audio = new AudioAttributes();
            // 设置通用编码格式
            audio.setCodec("aac");
            // 设置音频比特率,单位:b (比特率越高，清晰度/音质越好，当然文件也就越大 48_000 = 48kb)
            audio.setBitRate(48_000);
            // 设置重新编码的音频流中使用的声道数（1 =单声道，2 = 双声道（立体声））
            audio.setChannels(1);
            // 设置音频采样率，单位：赫兹 Hz，采样率越高声音的还原度越好，文件越大，48_000 = 45kHz
            audio.setSamplingRate(48_000);
            // 设置编码时候的音量值，未设置为0,如果256，则音量值不会改变
            audio.setVolume(256);

            VideoAttributes video = new VideoAttributes();
            // 设置编码
            video.setCodec("h264");
            //设置音频比特率,单位:b (比特率越高，清晰度/音质越好，当然文件也就越大 3_183_000 = 3183kb)
            video.setBitRate(3_183_000);
            // 设置视频帧率（帧率越低，视频会出现断层，越高让人感觉越连续）,这里 除1000是为了单位转换
            video.setFrameRate(30);
            // 编码设置
            EncodingAttributes attr = new EncodingAttributes();
            attr.setOutputFormat("mp4");
            attr.setAudioAttributes(audio);
            attr.setVideoAttributes(video);
            // 设置线程数
            //attr.setEncodingThreads(2);
            // 设置值编码
            Encoder ec = new Encoder();
            targetFile = new File(targetPath);
            File sourceFile = new File(sourcePath);
            ec.encode(new MultimediaObject(sourceFile), targetFile, attr);
            //压缩完成删除原视频
            //FileUtil.del(sourceFile);
        } catch (Exception e) {
            log.error("视频压缩异常", e);
        }
        return targetFile;
    }


*/
}